iT邦幫忙

2023 iThome 鐵人賽

DAY 29
0
Security

道德駭客新手入門系列 第 29

Day 29 網站應用程式入侵 7

  • 分享至 

  • xImage
  •  

網站應用程式安全測試

網站應用程式安全測試是一個評估應用程式的安全性和性能的過程,並及時生成關於其安全水平和威脅暴露的報告。通常由安全專家和程式設計師來執行,使用以下技術來測試和強化應用程式的安全性:

  • 手動網站應用程式安全測試 ,手動安全測試涉及使用手動設計的數據、自定義代碼和一些瀏覽器擴展工具,如SecApps,來檢測應用程式的漏洞和弱點。它主要關注業務邏輯錯誤和威脅分析。安全專家還使用其他工具,如Selenium、JMeter、Loadrunner、QTP、Bugzilla和Test Link 進行手動測試。
  • 自動網站應用程式安全測試,這是用於自動化測試過程的技術。自動化測試工具可用於系統性地快速發現漏洞,以便輕鬆修補它們。這些測試方法和程序被納入每個開發階段,以不斷報告反饋。每段代碼的更改都可以被分析,如果檢測到漏洞,開發人員將立即收到通知。安全專業人員使用工具如Ranorex studio、TestComplete、Leapwork、Katalon Studio 和 Testsigma 來執行自動測試。
  • 靜態應用程式安全測試(SAST) 靜態應用程式測試也稱為白盒測試,測試人員已經知道要測試的完整系統架構(包括其源代碼)或應用程式/軟件。SAST 工具幫助開發人員測試源代碼,以發現並報告與應用程式相關的設計缺陷,這些缺陷可能會為各種攻擊敞開大門。它還確保源代碼符合定義的規則、標準和指南。安全專家使用工具如Codacy、Appknox、AttackFlow、bugScout 和PT Application Inspector 來執行SAST。
  • 動態應用程式安全測試(DAST) 與SAST 不同,DAST 被稱為黑盒測試,測試人員不知道要測試的系統架構或應用程式。DAST 工具在運行代碼上執行,以識別與界面、請求/響應、會話、腳本、身份驗證過程、代碼注入等相關的問題。它們允許測試人員發現網站應用程式中的潛在漏洞或缺陷。DAST 工具還使用模糊測試,即將未經驗證的測試用例傳送到網頁。安全專業人員使用工具如Invicti、Acunetix漏洞掃描程式、HCL AppScan、Micro Focus Fortify on Demand 和Appknox 來執行DAST。

網站應用程式模糊測試(fuzzing)

網站應用程式模糊測試(fuzzing)是一種黑盒測試方法,用於識別網站應用程式中的編碼錯誤和安全漏洞,是一種質量檢查和保證技術。模糊測試工具(模糊器)生成大量的隨機數據稱為「fuzz」,並對目標網站應用程式使用這些數據,以發現各種攻擊可以利用的漏洞。攻擊者使用各種攻擊技術,以在最短時間內使受害者的網站應用程式崩潰並造成混亂。安全人員和網站開發人員使用這種模糊測試技術來測試開發的網站應用程式對緩衝區溢出、DOS、XSS 和SQL注入等攻擊的強壯性和免疫性。

模糊測試的步驟

網站應用程式的模糊測試包括以下步驟:

  • 確定目標系統
  • 確定輸入
  • 生成模糊數據
  • 使用模糊數據執行測試
  • 監控系統行為
  • 記錄缺陷

模糊測試策略

▪ 基於變異:在這種測試類型中,當前數據樣本創建新的測試數據,新的測試數據再次變異以生成更多隨機數據。這種測試從有效樣本開始,並不斷變異,直到達到目標為止。
▪ 基於生成:在這種測試類型中,新數據將從頭開始生成,所生成的數據量根據測試模型預定義。
▪ 基於協議:在這種測試類型中,協議模糊器向要測試的目標應用程式發送偽造的數據包。這種測試需要對正在測試的協議格式有詳細的了解。它涉及將一系列規範寫入模糊器工具,然後執行基於模型的測試生成技術,以遍歷所有列出的規範並添加數據內容、順序等方面的不規則性。

模糊測試場景

下圖顯示了模糊器的主要組件概覽。攻擊者腳本被提供給模糊器,然後模糊器將攻擊轉化為HTTP請求發送到目標。這些HTTP請求將從目標獲得響應,然後所有請求和響應都被記錄以供手動檢查。

模糊測試工具:

原始碼檢視

原始碼檢視用於檢測已開發的網站應用程式中的錯誤和不規則性。可以手動執行原始碼檢視,也可以使用自動化工具來識別應用程式代碼中的特定區域,以處理身份驗證、會話管理和數據驗證相關的功能。它們可以識別未經驗證的數據漏洞和開發人員使用的不良編碼技術,允許攻擊者利用網站應用程式。

編碼方案

編碼是將源信息轉換為其等效的符號形式的過程,有助於隱藏數據的含義。在接收端,編碼的數據被解碼為純文本格式。解碼是編碼的反向過程。網站應用程式使用不同的編碼方案來安全地處理不尋常字符和二進制數據。

編碼方案的類型

  • URL 編碼

網頁瀏覽器/網頁伺服器允許URL只包含ASCII碼的可打印字符,這些字符可以被它們理解用於地址定位。URL編碼是將URL轉換為有效的ASCII格式的過程,以便可以安全地在HTTP上傳輸數據。在這個範圍內的幾個字符在URL方案或HTTP協議中提到時具有特殊含義,因此這些字符受到限制。URL編碼將不尋常的ASCII字符替換為 "%"後面跟著十六進制格式中的字符的兩位ASCII碼,例如:

  • %3d =

  • %0a 換行符

  • %20 空格

  • HTML 編碼

    HTML編碼方案用於表示不尋常字符,以便可以安全地組合在HTML文件中。HTML編碼將不尋常字符替換為可以在文檔中識別的字符串,各種字符定義了文檔的結構。如果要使用與文檔中包含的字符相同的字符,可能會遇到問題。可以使用HTML編碼來克服這些問題。它定義了幾個HTML實體來表示特別常見的字符,例如

    • & &
    • < <
    • &gtl >
  • Unicode 編碼

    • 16位Unicode編碼
      它將不尋常的Unicode字符替換為"%u",後面跟著字符的Unicode碼點,以十六進制格式表示。 • %u2215 /
    • UTF-8
      這是一種可變長度編碼標準,以十六進制格式表示每個字節,並在前面加上%。
      • %c2%a9 ©
      • %e2%89%a0
  • Base64 編碼
    Base64編碼方案使用僅包含可打印ASCII字符的方式來表示任何二進制數據。通常,它用於對SMTP進行安全傳輸的電子郵件附件的編碼,也用於編碼用戶憑據。
    例如:

    cake = 01100011011000010110101101100101
    Base64編碼: 011000 110110 000101 101011 011001 010000 000000 000000

  • 十六進制編碼
    The HTML encoding scheme uses the hex value of every character to represent a collection of characters for transmitting binary data.

    For, example:

    Hello A125C458D8

    Jason 123B684AD9

    • URL 編碼

    網頁瀏覽器/網頁伺服器允許URL只包含ASCII碼的可打印字符,這些字符可以被它們理解用於地址定位。URL編碼是將URL轉換為有效的ASCII格式的過程,以便可以安全地在HTTP上傳輸數據。在這個範圍內的幾個字符在URL方案或HTTP協議中提到時具有特殊含義,因此這些字符受到限制。URL編碼將不尋常的ASCII字符替換為 "%"後面跟著十六進制格式中的字符的兩位ASCII碼,例如:

    • %3d =
    • %0a 換行符
    • %20 空格
    • HTML 編碼

    HTML編碼方案用於表示不尋常字符,以便可以安全地組合在HTML文件中。HTML編碼將不尋常字符替換為可以在文檔中識別的字符串,各種字符定義了文檔的結構。如果要使用與文檔中包含的字符相同的字符,可能會遇到問題。可以使用HTML編碼來克服這些問題。它定義了幾個HTML實體來表示特別常見的字符,例如:

    • & &
    • < <
    • &gtl >
    • Unicode 編碼

    Unicode編碼有兩種類型:16位Unicode編碼和UTF-8。

    • 16位Unicode編碼
      它將不尋常的Unicode字符替換為"%u",後面跟著字符的Unicode碼點,以十六進制格式表示。 • %u2215 /
    • UTF-8
      這是一種可變長度編碼標準,以十六進制格式表示每個字節,並在前面加上%。
    • %c2%a9 ©
    • %e2%89%a0
    • Base64 編碼
      Base64編碼方案使用僅包含可打印ASCII字符的方式來表示任何二進制數據。通常,它用於對SMTP進行安全傳輸的電子郵件附件的編碼,也用於編碼用戶憑據。
      例如:

    cake = 01100011011000010110101101100101
    Base64編碼: 011000 110110 000101 101011 011001 010000 000000 000000

    • 十六進制編碼
      HTML編碼方案使用每個字符的十六進制值來表示一組字符,用於傳輸二進制數據。

      例如:

      Hello A125C458D8

      Jason 123B684AD9

白名單與黑名單

網站應用程式在全球數位轉型中扮演了重要角色。這種快速的發展激勵了攻擊者使用不同的技術來利用應用程式中存在的漏洞和違規情況,從而危害系統安全。為了阻止這些攻擊,安全專業人員需要實施各種安全策略和測試策略。白名單和黑名單就是一種可以保持應用程式、網絡和基礎設施安全的安全策略。使用這種策略,可以創建一個允許的實體清單和一個需要被阻擋的清單。因此,在惡意軟件進入組織網絡之前,可以有效地阻止它。

  • 應用程式白名單

應用程式白名單指定應該被允許在系統中執行的應用程式組件清單,例如軟體庫、插件、擴展和配置檔案,或者合法的軟體。它有助於防止未經授權的執行和惡意程序的傳播。它還可以防止未經批准或易受攻擊的應用程式的安裝。白名單提供了更大的靈活性,可以防止勒索軟體和其他類型的惡意軟件對網站應用程式進行攻擊。

  • 應用程式黑名單

應用程式黑名單指定不允許在系統或網絡中執行的惡意應用程式或軟體。黑名單可以通過阻止可能導致損害或導致攻擊的惡意應用程式來執行。黑名單是一種基於威脅的方法,它無法檢測現代威脅,導致攻擊導致數據損失。因此,定期更新黑名單非常重要,以防禦最新的惡意軟體攻擊。應用程式黑名單可以通過在防火牆層次添加應用程式的名稱或安裝特定軟體來執行。

  • 基本URL管理的黑名單和白名單

URL黑名單阻止用戶載入黑名單中的URL的網頁。用戶可以訪問除黑名單中的URL之外的所有URL。URL白名單允許用戶訪問只有特定URL的例外情況,這些URL已添加到URL黑名單中。URL白名單使用以下方法進行:

  • 允許訪問除封鎖的URL之外的所有URL:白名單可以允許用戶訪問其餘的網絡應用程式
  • 封鎖訪問所有URL,除了允許的URL:白名單可以允許訪問有限的URL清單
  • 定義非常嚴格的黑名單的例外情況:白名單允許用戶訪問方案、其他域的子域、特定路徑或端口
  • 允許瀏覽器打開應用程式:白名單僅針對特定外部協議處理程序執行,以使瀏覽器可以自動執行應用程式
    URL黑名單使用以下方法進行:
  • 允許訪問所有URL,除了封鎖的URL:黑名單防止用戶訪問被封鎖的
  • 封鎖訪問所有URL,除了允許的URL:黑名單阻止訪問所有惡意URL
  • 定義非常嚴格的黑名單的例外情況:黑名單限制對所有易受攻擊的URL的訪問
  • 允許瀏覽器打開應用程式:黑名單防止瀏覽器自動執行應用程式

白名單與黑名單工具


上一篇
Day 28 網站應用程式入侵 6
下一篇
Day 30 網站應用程式入侵 8
系列文
道德駭客新手入門30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言